09ff0099b6ad978196fd18c52df52e89c85c0c21,xwiki-platform-watchlist/plugin/src/main/java/com/xpn/xwiki/plugin/watchlist/WatchListPlugin.java,WatchListPlugin,initWatchListJob,#number#String#String#String#XWikiContext#,211
Before Change
if (needsUpdate) {
int index = doc.createNewObject(SchedulerPlugin.XWIKI_JOB_CLASS, context);
BaseObject job = doc.getObject(SchedulerPlugin.XWIKI_JOB_CLASS, index);
job.setStringValue("jobName", name);
job.setStringValue("jobClass", jobClass);
job.setStringValue("cron", cron);
job.setLargeStringValue("script", Integer.toString(interval));
job.setLargeStringValue("jobDescription", description);
// set the needed context params
// TODO create a watchlist application that holds those jobs as documents
job.setStringValue("contextUser", "XWiki.Admin");
job.setStringValue("contextLang", "en");
job.setStringValue("contextDatabase", "xwiki");
doc.setContent("#includeInContext('XWiki.SchedulerJobSheet')");
doc.setAuthor("XWiki.Admin");
doc.setCreator("XWiki.Admin");
index = doc.createNewObject("XWiki.XWikiRights", context);
BaseObject rights = doc.getObject("XWiki.XWikiRights", index);
rights.setStringValue("groups", "XWiki.XWikiAdminGroup");
rights.setStringValue("levels", "edit,delete");
rights.setIntValue("allow", 1);
context.getWiki().saveDocument(doc, "", true, context);
((SchedulerPlugin) context.getWiki().getPlugin("scheduler", context))
.scheduleJob(job, context);
}
}
After Change
if (job == null) {
needsUpdate = true;
int index = doc.createNewObject(SchedulerPlugin.XWIKI_JOB_CLASS, context);
job = doc.getObject(SchedulerPlugin.XWIKI_JOB_CLASS, index);
job.setStringValue("jobName", name);
job.setStringValue("jobClass", jobClass);
job.setStringValue("cron", cron);
job.setLargeStringValue("script", Integer.toString(interval));
job.setLargeStringValue("jobDescription", description);
job.setStringValue("contextUser", "XWiki.Admin");
job.setStringValue("contextLang", "en");
job.setStringValue("contextDatabase", "xwiki");
}
BaseObject rights = doc.getObject("XWiki.XWikiRights");
if (rights == null) {
needsUpdate = true;
int index = doc.createNewObject("XWiki.XWikiRights", context);
rights = doc.getObject("XWiki.XWikiRights", index);
rights.setStringValue("groups", "XWiki.XWikiAdminGroup");
rights.setStringValue("levels", "edit,delete");
rights.setIntValue("allow", 1);
}
if (StringUtils.isBlank(doc.getAuthor())) {
needsUpdate = true;
doc.setAuthor("XWiki.Admin");
}
if (StringUtils.isBlank(doc.getCreator())) {
needsUpdate = true;
doc.setCreator("XWiki.Admin");
}
if (StringUtils.isBlank(doc.getParent())) {
needsUpdate = true;
doc.setParent("XWiki.XWikiClasses");
}
if (StringUtils.isBlank(doc.getContent())) {
needsUpdate = true;
doc.setContent("#includeInContext(\"XWiki.SchedulerJobSheet\")");
}
if (needsUpdate) {
context.getWiki().saveDocument(doc, "", true, context);
((SchedulerPlugin) context.getWiki().getPlugin("scheduler", context)).scheduleJob(job, context);
}
} catch (Exception e) {
log.error("Cannot initialize WatchListJob", e);